(function(){
    class Animal {
        name: string;
        constructor(name: string) {
            this.name = name;
        }
        sayHello() {
            console.log(this.name + '在叫');
        } 
    }
  

    class Dog extends Animal {
        age: number;
        constructor(name: string, age: number) {
            // 如果在子类中写了构造函数，在子类的构造函数中必须对父类的构造函数进行调用
            // 如果子类没有构造函数，则在创建对象时会自动调用父类的构造函数
            super(name); // 调用父类的构造函数
            this.age = age;
        }
        sayHello(): void {
            // 在类的方法中super就表示当前类的父类
            super.sayHello();
        }
    }

    const dog = new Dog('旺财', 5);
    dog.sayHello();
})()

// 20240406 p17 end